package com.wenhao.leetcode.medium;

/**
 * 题目：https://leetcode-cn.com/problems/jump-game/
 * 跳跃游戏
 *
 * 已经做过跳跃游戏2，那么这一题就很简单了
 * 维护一个现在能达到的最远距离
 * 遍历每一个格子，如果当前格子的距离已经大于能够达到的最远距离了，那么不能达到最后一个格子
 * 如果在能够达到的最远距离之内，那么根据当前可跳跃的步数更新最远距离
 *
 * @author Wenhao Tong
 * @Description
 * @create 2021-06-29 11:33
 */
public class LeetCode55 {

    public static void main(String[] args) {

    }

    public boolean canJump(int[] nums) {
        int reach = 0;
        for (int i = 0;i < nums.length;i++) {
            if (reach >= i) {
                reach = Math.max(reach,i + nums[i]);
            }else {
                return false;
            }
            if (reach >= nums.length) {
                return true;
            }
        }
        // 这里有点奇怪，for循环里面一定可以return的
        return true;
    }

}
